<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // let arr = [1, 22, 34, 22, 34, 45, 67, 34, 56];
        // let arr = [2, 2, 3]
        // reduce 数组累加
        /**
         * 当没有第二个参数时，reduce默认pre是数组的第一项值
          */
        // let res= arr.reduce((pre, current, index) => {
        //     console.log(pre, current, index);
        //     return pre + current;
        // })
        // console.log(res);

        // reduce给数组去重
        /**
         *  方式1：利用对象的键名是唯一且不重复的
         *         第一步：添加至对象的键名
         *         第二步：循环遍历拿出键名 ，并转数值
         *  方式2： includes() pre:[]  -1时，push
         *  方式2： indexOf()           false , push
          */
        // 1.对象的键名是唯一且不重复的
        let arr = [1, 22, 34, 22, 34, 45, 67, 34, 56];
        // let res = arr.reduce((pre, current) => {
        //     pre[current] = 1;
        //     return pre;
        // },{})

        // // let keys = Object.keys(res);
        // // console.log(keys); //数组里的数字为字符串型，还需将其转为数值型

        // var newArr = [];
        // for (let key in res) {
        //     // 转数字 ：1.Number  2. parseInt 3.paseFloat 4.非加的运算符
        //     newArr.push(parseInt(key));
        // }
        // console.log(newArr);

        // 2.includes indexof 
        // let newArr = [];
        // for(let i = 0; i < arr.length; i++) {
        //     newArr.indexOf(arr[i]) === -1 ? newArr.push(arr[i]) : null;
        // }
        // console.log(newArr);

        // let res = arr.reduce((pre, current) => {
        //     pre.indexOf(current) === -1 ? pre.push(current) : null;
        //     return pre;
        // }, []);
        // console.log(res);

        let res = arr.reduce((pre, current) => {
            pre.includes(current)? null :pre.push(current) ;
            return pre;
        }, []);
        console.log(res);

        
    </script>
</body>
</html>